"""
相关配置信息
1、数据库配置
2、redis配置
3、session配置
4、csrf配置
"""
# 调用方法，获取app
import datetime
import random

from flask import current_app
from flask_migrate import Migrate
from flask_script import Manager,Command
from info import create_app, db, models
from info.models import User

app = create_app("develop")
manager = Manager(app)
migrate = Migrate(app,db)
Migrate(app, db)


# manager.add_command("db",MigrateCommand)
# @manager.option()给manager添加一个脚本运行的方法
# 参数1：在调用方法的时候传递的参数名称
# 参数2：是对参数1的解释
# 参数3：目标参数，用来传递给形式参数使用的
@manager.option("-u", "--username", dest='username')
@manager.option("-p", "--password", dest='password')
def create_superuser(username, password):
    # 1、创建用户对象
    admin = User()
    # 2、设置用户属性
    admin.nick_name = username
    admin.mobile = username
    admin.password = password
    admin.is_admin = True
    # 3、保存到数据库
    try:
        db.session.add(admin)
        db.session.commit()

    except Exception as e:
        print(e)
        return "创建失败"
    return "创建成功"

# 为了图表好看，添加测试用户
@manager.option("-t","--test",dest="test")
def add_test_user(test):
    # 1、定义容器
    user_list = []
    # 2、for循环创建1000个用户
    for i in range(0,1000):
        user = User()
        user.nick_name="老王%s" % i
        user.mobile = "136%08d" % i
        user.password_hash = "pbkdf2:sha256:150000$adSzPSoe$42438156f28cda5ca3c5b122ccad48e37f7d38255e604b25864514025ab97249"
        # 设置用户的登录时间为近31天的
        user.last_login = datetime.datetime.now() - datetime.timedelta(seconds=random.randint(0,31*3600*24))
        user_list.append(user)
    # 3、将用户添加到数据库中
    try:
        db.session.add_all(user_list)
    except Exception as e:
        current_app.logger.error(e)
        return ""

if __name__ == '__main__':
    manager.run()
